package smartgrid.agents.regulator;

import java.util.List;
import java.util.Map;
import smartgrid.modules.normative.sanction.SanctionAbstract;

public interface IRegulatorAgent {
	
	/**
	 * Get regulator identification
	 * 
	 * @param none
	 * @return Regulator identification
	 */
	public int getId();
	
	
	/**
	 * Initialize the simulation timestep
	 * 
	 * @param timestep
	 *          Number of the simulation timestep
	 * @return none
	 */
	public void initTimestep(int timestep);
	
	
	/**
	 * Process requests and decide sanctions
	 * 
	 * @param sanction
	 *          List of request of sanctions
	 * @return Sanctions
	 */
	public List<SanctionAbstract> decideSanction(
			Map<Integer, List<SanctionAbstract>> sanctions);
	
	
	/**
	 * Get a Regulator's output record
	 * 
	 * @param none
	 * @return Regulator output record
	 */
	public void generateOutput();
}